package com.totoro.redis.string;

import org.springframework.data.redis.core.RedisTemplate;

import javax.annotation.Resource;

/**
 * Created by Administrator on 2017/11/14/014.
 */
public class StringCommandUtils {
    @Resource
    RedisTemplate redisTemplate ;

    public void set_string(String key, String value){
        redisTemplate.opsForValue().set(key,value);
    }

    /**
     * string类型数据结构可以存三种类型数据
     * 字符串
     * 整数
     * 浮点数据
     * @param key
     * @return
     */
    public Object get_string(String key){
        return redisTemplate.opsForValue().get(key);
    }

    /** 对字符类型数据结构进行自增自减命令 **/

    public Long incr_string(String key){
        return redisTemplate.opsForValue().increment(key, 1);
    }

    public Long decr_string(String key){
        return redisTemplate.opsForValue().increment(key , -1) ;
    }

    public Long incrby_string(String key, long value){
        return redisTemplate.opsForValue().increment(key, value);
    }

    public Long decrby_string(String key, long value){
        return redisTemplate.opsForValue().increment(key, -value);
    }

    public Double incrbyfloat_string(String key, double value){
        return redisTemplate.opsForValue().increment(key, value) ;
    }

    /** 对字符串进行操作命令 **/

    /**
     * 返回修改后字符串的长度
     * @param key
     * @param value
     * @return
     */
    public int append_string(String key, String value){
        return redisTemplate.opsForValue().append(key, value) ;
    }

    public String getrange_string(String key, long begin, long end){
        return redisTemplate.opsForValue().get(key, begin, end);
    }

    /**
     * 从给定位置开始修改字符串的值为value
     * @param key
     * @param value
     * @param begin
     */
    public void setrange_string(String key, String value, long begin){
        redisTemplate.opsForValue().set(key, value, begin);
    }



}
